home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / PHANTCYB.ZIP / MAKEDATA.PAS < prev    next >
Pascal/Delphi Source File  |  1994-08-05  |  41KB  |  862 lines

  1. program PHANTOM_3D_ENGINE;
  2. uses vga256,crt;
  3. const SCRWIDTH=320;
  4.       MWIDTH=128;
  5.       MCENTRE=64;
  6.       SIZE=160;           { veelvoud van 2!! }
  7.       LINES=70;           { aantal lijnen voor vloer (MAX. 70) }
  8.       KIM=29;             { hoogte tussen plafond en vloer }
  9.       XPOS=0;
  10.       DARK=1;             { donker in de verte }
  11.       DIST=3500;          { 1769 voor SIZE=320 }
  12.  
  13. var s1,o1,s3,o3: word;
  14.     p1,p3,font1: pointer;
  15.     c,i,x,y,width: word;
  16.     a1,a2,a3,x1,y1: word;
  17.     sy,ss,w,bg: real;
  18.     f: file;
  19.     sn,cs: array[0..360] of real;
  20.     a: char;
  21.     b,q: byte;
  22.     s,d,x2,y2,x3,y3,r,v: integer;
  23.     cset: string;
  24.     px,py: array[0..360] of integer;
  25.     quit: boolean;
  26.     t: array[0..32] of string[33];
  27.  
  28. procedure DummySource(var p: pointer);
  29. var i,s,o,x: word;
  30.     r,m: array[0..63] of string[64];
  31.     t: string;
  32.     q,w: word;
  33. Function Conv(s: char): byte;
  34. var i: byte;
  35. begin
  36.    for i:=1 to length(cset) do if cset[i]=s then Conv:=i;
  37. end;
  38.  
  39. begin
  40.    s:=Seg(p^);
  41.    o:=Ofs(p^);
  42.    Cset:='abcde$_@1234#[]&ABlDEFiHIjKLMNOPQRSTUnmxYZ*?.{u5678/0o-k :~';
  43.  
  44.    m[ 0]:='###########################################################&&&&&';
  45.    m[ 1]:='###########################################################&&&&&';
  46.    m[ 2]:='###........############################::..#..@:::::::::3##&&&&&';
  47.    m[ 3]:='###........a##########################b:@..#..             {{{&&';
  48.    m[ 4]:='###........::::::::::::::::::::::::::::::..#..@            {{{&&';
  49.    m[ 5]:='###........:::@:@:@:@:@:@:@:@:@:@:@:@:@:@..#..             {{{&&';
  50.    m[ 6]:='###........:::                           .....@:::::::::1#&{{{&&';
  51.    m[ 7]:='###........::: ::                        .....:::::::::x##&{{{&&';
  52.    m[ 8]:='###........### ::                        .....@::::::::x##&{{{&&';
  53.    m[ 9]:='###........###         :::@:@:@:@:@:@:   .....:::::::::x##&{{{&&';
  54.    m[10]:='###...........                           .....:::::::::x##&{{{&&';
  55.    m[11]:='###...........         #2                .....:::::::::x##&{{{&&';
  56.    m[12]:='###...........        1##                .....:::::::::x##&{{{&&';
  57.    m[13]:='###...........BIZAR  1###~~~~~~~~cd::::::.....:::::::::x##&{{{&&';
  58.    m[14]:='###:~~~~~~~...      1####~~~~~~~~##::::::#####:::::::::x##&{{{&&';
  59.    m[15]:='###:~~~--~~...     1#####~~~&&~~~##::::::#####::::::ad:x##&{{{&&';
  60.    m[16]:='###:~~~~~~~...    1######~~~~~~~~##::::::#####::::::ab:x##&{{{&&';
  61.    m[17]:='##############c~~~#################                    x##&{{{&&';
  62.    m[18]:='###############~~~3################                    x##&&&&&&';
  63.    m[19]:='###############~~~~3######4~~~~3###____                x##&&&&&&';
  64.    m[20]:='###############2~~~~3####4~~~~~~3##::::::c###d::    :::x##&&&&&&';
  65.    m[21]:='           #####2~~~~3###~~@  @~~##::::::#####::    :::x##&&&&&&';
  66.    m[22]:='           ######2~~~~~~~~~ 56 ~~###############----######&&&&&&';
  67.    m[23]:='           #######2~~~~~~~~ 78 ~~###############----######&&&&&&';
  68.    m[24]:='           #############d~~@  @~~##&&-------------------------&&';
  69.    m[25]:=' PHANTOM   ##############2~~~~~~1##&&-------0--o------------o-&&';
  70.    m[26]:=' 3DSPACE   ###############2~~~~1###&&--------------0----0----0&&';
  71.    m[27]:='                         ##2~~1####&&----0------0----------o--&&';
  72.    m[28]:=' world created on 5 may  ###ux#####&&--------0---o--o-----0000&&';
  73.    m[29]:=' in the year of the Lord ###ux#####&&----------------0----0[[0&&';
  74.    m[30]:='   1994, for the Bizar   ###~~#####&&-----------0------0--0[[0&&';
  75.    m[31]:='    demo competition     ##4~~3####&&------0--o-----o----o0000&&';
  76.    m[32]:='                         ##~~~~####&&-------------0--------o--&&';
  77.    m[33]:='          ----           ##~~~~####&&&&&&&&&&&&&&&&&&&&&&&&&&&&&';
  78.    m[34]:='                         ##~~~~####&&&&&&&&&&&&&&&&&&&&&&&&&&&&&';
  79.    m[35]:='            ###############~~~~#################################';
  80.    m[36]:='            ##############b~~~~#################################';
  81.    m[37]:='     #########~~~~~~~~~~~~~~~~~###~~~~~~~~3############~~~######';
  82.    m[38]:='     ########b~~@~~@~~@~~@~@~~~a#b~~ ~~~~~~3##########b~@~a#####';
  83.    m[39]:='     ###~~~~~~~~~~~~~~~~~ ~ ~~~~~~~~~~~~~~~~~~~~~:~~~~~~~~~~3###';
  84.    m[40]:='     ###~~~~~:~~~~~~~~~:~ ~ ~~~~ ~~~~~cd~~~:~~~~~~~~~~ ~~~~~~$##';
  85.    m[41]:='     ###~~~~~~~~~~~ ~~~~~ ~ ~~~~~~~~~~ab~~~~~~~~~~~~~~~~~~~~~$##';
  86.    m[42]:='     ###~~~~~~~~~_~~~_~~~_~ ~_~~~_~~_~~~~_~~~_~~~_~~~_~~~_~~1###';
  87.    m[43]:='     ###~~~~~~c#################################################';
  88.    m[44]:='     ###~ ~~~~#&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&';
  89.    m[45]:='     ###~~~~~~#&----------------0-o-0-0---0---o--0-----------&&&';
  90.    m[46]:='     ###2~~~~~#&0---o-----o--------0-0-0----------------00---&&&';
  91.    m[47]:='     ####d~~ ~#&-------------0--o---0-0-----o-----0-----00---&&&';
  92.    m[48]:='     #####~~~~#&--0-----o---------------0------------o-------&&&';
  93.    m[49]:='     ####b~~~~#&o----------------o-------o-----o-----------o-&&&';
  94.    m[50]:='     ###4~~~~~#&-o---o--0-----0------0------------------o----&&&';
  95.    m[51]:='     ###~~~~~~#&----------------------o----------------------&&&';
  96.    m[52]:='     ###~~~ ~~#&0---o------o--------------o-----o---------o--&&&';
  97.    m[53]:='     ###~~~~~~#&--o--0-----------00--------------------0-----&&&';
  98.    m[54]:='     ###~~~~~~&&-------o---------00-----o---------o----------&&&';
  99.    m[55]:='     ###~~~~~~&&--0---------o-----------------0----0-0-0-0-0-&&&';
  100.    m[56]:='     ###~~@~~~&&---------0----o-----o-----------0-o-0-0-0-0-0&&&';
  101.    m[57]:='     ###~~~56~]]---o----------------------o----o-o-0-0-0-0-0-&&&';
  102.    m[58]:='     ###~~~78~[[0-----o----0------o---0------o---0--0-0-0-0-0&&&';
  103.    m[59]:='     ###~~@~~~&&-o-------o-----0---------------0---0-0-0-0-0-&&&';
  104.    m[60]:='     ###~~~~~~&&----0------------o-------0----o-o-0-0-0-0-0-0&&&';
  105.    m[61]:='     ###______&&------------0-----o--0------0------0-0-0-0-0-&&&';
  106.    m[62]:='     #########&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&';
  107.    m[63]:='     #########&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&';
  108.  
  109.    r[ 0]:='                                                                ';
  110.    r[ 1]:='                                                                ';
  111.    r[ 2]:='   ///////////////////////////////////////*?*////////////////m  ';
  112.    r[ 3]:='   ///////////////////////////////////////*?*////////////////m  ';
  113.    r[ 4]:='   /////////lllllllllllllllllllllllllll///*?*////////////////m  ';
  114.    r[ 5]:='   ///////////////////////////////////////*?*////////////////m  ';
  115.    r[ 6]:='   ///////////////////////////////////////*?*//////////////k/m  ';
  116.    r[ 7]:='   ///////////////////////////////////////*?*//////////////k/m  ';
  117.    r[ 8]:='   ///////////////////////////////////////*?*//////////////k/m  ';
  118.    r[ 9]:='   ///////////////////////////////////////*?*//////////////k/m  ';
  119.    r[10]:='   ///////////////////////////////////////*?*//////////////k/m  ';
  120.    r[11]:='   ///////////////////////////////////////*?*//////////////k/m  ';
  121.    r[12]:='   ///////////////////////////////////////*?*//////////////k/m  ';
  122.    r[13]:='   ///////////////////////////////////////*?*//////////////k/m  ';
  123.    r[14]:='   ////nn///////////////////nn//////////m/////k////////////k/m  ';
  124.    r[15]:='   ///m**k/////////////////m**k/////////m/////k////////////k/m  ';
  125.    r[16]:='   ////ll///////////////////ll//////////m/////k////////////k/m  ';
  126.    r[17]:='               //////              //////lllll/////////////k/m  ';
  127.    r[18]:='               //////    jjjjjjjj  ///////////////////////////  ';
  128.    r[19]:='               //////   jjjjjjjjjj //////nnnnn////////////////  ';
  129.    r[20]:='               ///////  jj*iiii*jj /////m/////m///////////////  ';
  130.    r[21]:='               ///////??jjiiiiiijj /////m/////m///////////////  ';
  131.    r[22]:='               ///////??jjii**iijj /////////////----//////////  ';
  132.    r[23]:='               ///////??jjii**iijj /////////////----//////////  ';
  133.    r[24]:='                        jjiiiiiijj //-------------------------  ';
  134.    r[25]:='                        jj*iiii*jj //-------------------o-----  ';
  135.    r[26]:='                         jjjjjjjj  //----------------o--------  ';
  136.    r[27]:='                          jjjjjj   //-----------o---------0-0-  ';
  137.    r[28]:='                           ????    //--------------------o-0-0  ';
  138.    r[29]:='                           ????    //---------------o--o--0-0-  ';
  139.    r[30]:='                           ////    //----------------------0-0  ';
  140.    r[31]:='                           ////    //--------------o----o-0-0-  ';
  141.    r[32]:='                           k//m      -----------------o----0-0  ';
  142.    r[33]:='                           k//m                                 ';
  143.    r[34]:='                           k//m                                 ';
  144.    r[35]:='                           k//m                                 ';
  145.    r[36]:='                           ////                                 ';
  146.    r[37]:='              /////////////////   ///////////        ///////    ';
  147.    r[38]:='             /////////////////// /////////////      ///lll///   ';
  148.    r[39]:='        ?/////////////////////////////nn////ll/ll/ll//////////  ';
  149.    r[40]:='        /////////?*?*?*?*?*?/////////m//k/////////////////////  ';
  150.    r[41]:='        //*/*////////////////////////m//k/////////////////////  ';
  151.    r[42]:='        //////////n//n//n//n//n//n////ll//////////////////////  ';
  152.    r[43]:='        //*/*//                                                 ';
  153.    r[44]:='        //////                                                  ';
  154.    r[45]:='        //*/*/  ---------------------------------------------   ';
  155.    r[46]:='        //////  ---------------------------------------------   ';
  156.    r[47]:='        //////  ---------------------------------------------   ';
  157.    r[48]:='        //////  ---------------------------------------------   ';
  158.    r[49]:='        //////  ---------------------------------------------   ';
  159.    r[50]:='        //////  ---------------------------------------------   ';
  160.    r[51]:='        //////  ---------------------------------------------   ';
  161.    r[52]:='        //*/*/  ---------------------------------------------   ';
  162.    r[53]:='   -----//////  ---------------------------------------------   ';
  163.    r[54]:='   -----//*/*/  ---------------------------------------------   ';
  164.    r[55]:='   -----//////  ---------------------------------------------   ';
  165.    r[56]:='   -----//////  ---------------------------------------------   ';
  166.    r[57]:='   -----///////?---------------------------------------------   ';
  167.    r[58]:='   -----///////?---------------------------------------------   ';
  168.    r[59]:='   -----//////  ---------------------------------------------   ';
  169.    r[60]:='   -----//////  ---------------------------------------------   ';
  170.    r[61]:='   -----??????  ---------------------------------------------   ';
  171.    r[62]:='                                                                ';
  172.    r[63]:='                                                                ';
  173.  
  174.    q:=32*MWIDTH+32+o;
  175.    w:=q+16384;
  176.    for i:=0 to 63 do begin
  177.       for x:=0 to 63 do begin
  178.          mem[s:q+x]:=Conv(m[i][x]);
  179.          mem[s:w+x]:=Conv(r[i][x]);
  180.       end;
  181.       inc(q,MWIDTH);
  182.       inc(w,MWIDTH);
  183.    end;
  184. end;
  185.  
  186. procedure ConvertBitmap(s,o,n: word);
  187. var x,y,a: word;
  188. begin
  189.    a:=n*1024+o;
  190.    for x:=16 to 47 do for y:=16 to 47 do
  191.       mem[s:a+(x mod 32)+(y mod 32)*32]:=mem[s:o+x+(y-16)*32-16];
  192. end;
  193.  
  194. function Pixel(s,o: word; x,y: byte): byte;
  195. begin
  196.    Pixel:=0;
  197.    if mem[s:o+x*4+y*128]=31 then Pixel:=1
  198. end;
  199.  
  200. procedure MakeOutlines(s,o: word);
  201. var z: byte;
  202.     x,y,i,q,w: word;
  203. begin
  204.    for x:=1 to 7 do for y:=1 to 7 do begin
  205.       q:=x*4-2+((y*4)-2)*32+o;
  206.       if mem[s:q+34]=31 then begin
  207.          z:=Pixel(s,o,x,y-1)+2*Pixel(s,o,x+1,y)+4*Pixel(s,o,x,y+1)+8*Pixel(s,o,x-1,y);
  208.          if not (odd(z)) then meml[s:q]:=$8080808;
  209.          if (z=1) or (z=4) or (z=5) or (z=8) or (z=9) or (z=12) or (z=13) or (z=0) then begin
  210.             mem[s:q+35]:=8;
  211.             mem[s:q+67]:=8;
  212.             mem[s:q+99]:=8;
  213.             mem[s:q+3]:=8;
  214.          end;
  215.          if (z=1) or (z=3) or (z=2) or (z=8) or (z=9) or (z=10) or (z=11) or (z=0) then
  216.             meml[s:q+96]:=$8080808;
  217.          if (z<8) then begin
  218.             mem[s:q+32]:=8;
  219.             mem[s:q+64]:=8;
  220.             mem[s:q+96]:=8;
  221.             mem[s:q]:=8;
  222.          end;
  223.       end;
  224.    end;
  225. end;
  226.  
  227. procedure MChar(b: byte; c: string; var s,o: word);
  228. var i,x,y,x1,y1,a: word;
  229.     t: char;
  230. begin
  231.    for i:=0 to 1023 do mem[s:o+i]:=random(3)+10;
  232.    for y:=1 to 7 do for x:=1 to 7 do begin
  233.      t:=c[y*8+x-8];
  234.       if t='*' then for x1:=x*4-2 to x*4+1 do for y1:=y*4-2 to y*4+1 do
  235.          mem[s:o+x1+y1*32]:=31;
  236.    end;
  237.    MakeOutlines(s,o);
  238.    ConvertBitmap(s,o,b);
  239. end;
  240.  
  241. procedure Wall(n: byte; t: string; s,o: word);
  242. var i: byte;
  243. begin
  244.    for i:=0 to 31 do mem[s:o+i*32+n]:=ord(t[i+1])-ord('a');
  245. end;
  246.  
  247. procedure ConvertSpecial(s,o,n: word);
  248. var a,x,y: word;
  249. begin
  250.    for x:=0 to 31 do for y:=0 to 31 do begin
  251.       if t[y][x+1]='o' then mem[s:x+y*32]:=0;
  252.       if t[y][x+1]='-' then mem[s:x+y*32]:=random(3)+5;
  253.       if t[y][x+1]='=' then mem[s:x+y*32]:=random(3)+10;
  254.       if ((t[y][x+1]>='a') and (t[y][x+1]<'o'))
  255.          then mem[s:x+y*32]:=ord(t[y][x+1])-ord('a');
  256.    end;
  257.    ConvertBitmap(s,o,n);
  258. end;
  259.  
  260. procedure DummyBitmaps(var p: pointer);
  261. var x,y,i,s,o,a,c: word;
  262.     b: array[0..31] of string[32];
  263. begin
  264.    s:=Seg(p^);
  265.    o:=Ofs(p^);
  266.    {clear all bitmaps}
  267.    for i:=0 to 256*63 do meml[s:o+i shl 2]:=0;
  268.    {special bitmap 1:  }
  269.    t[ 0]:='oooooooooooooooooooooooooooooooo';
  270.    t[ 1]:='oooooooooooooooooooooooooooooooo';
  271.    t[ 2]:='oooooooooooooooooooooooooooooooo';
  272.    t[ 3]:='oooooooooooooooooooooooooooooooo';
  273.    t[ 4]:='oooooooooooooooooooooooooooooooo';
  274.    t[ 5]:='oooooooooooooooooooooooooooooooo';
  275.    t[ 6]:='oooooooooooooooooooooooooooooooo';
  276.    t[ 7]:='oooooooooooooooooooooooooooooooo';
  277.    t[ 8]:='oooooooooooooooooooooooooooooooo';
  278.    t[ 9]:='oooooooooooooooooooooooooooooooo';
  279.    t[10]:='oooooooooooooooooooooooooooooooo';
  280.    t[11]:='oooooooooooooooooooooooooooooooo';
  281.    t[12]:='oooooooooooooooooooooooooooooooo';
  282.    t[13]:='oooooooooooooooooooooooooooooooo';
  283.    t[14]:='oooooooooooooooooooooooooooooooo';
  284.    t[15]:='oooooooooooooooooooooooooooooooo';
  285.    t[16]:='-ooooooooooooooooooooooooooooooo';
  286.    t[17]:='-ooooooooooooooooooooooooooooooo';
  287.    t[18]:='-ooooooooooooooooooooooooooooooo';
  288.    t[19]:='--oooooooooooooooooooooooooooooo';
  289.    t[20]:='--oooooooooooooooooooooooooooooo';
  290.    t[21]:='---ooooooooooooooooooooooooooooo';
  291.    t[22]:='---ooooooooooooooooooooooooooooo';
  292.    t[23]:='----oooooooooooooooooooooooooooo';
  293.    t[24]:='-----ooooooooooooooooooooooooooo';
  294.    t[25]:='------oooooooooooooooooooooooooo';
  295.    t[26]:='-------ooooooooooooooooooooooooo';
  296.    t[27]:='--------oooooooooooooooooooooooo';
  297.    t[28]:='---------ooooooooooooooooooooooo';
  298.    t[29]:='-----------ooooooooooooooooooooo';
  299.    t[30]:='-------------ooooooooooooooooooo';
  300.    t[31]:='----------------oooooooooooooooo';
  301.    ConvertSpecial(s,o,1);
  302.    {special bitmap 2:  }
  303.    t[ 0]:='oooooooooooooooooooooooooooooooo';
  304.    t[ 1]:='oooooooooooooooooooooooooooooooo';
  305.    t[ 2]:='oooooooooooooooooooooooooooooooo';
  306.    t[ 3]:='oooooooooooooooooooooooooooooooo';
  307.    t[ 4]:='oooooooooooooooooooooooooooooooo';
  308.    t[ 5]:='oooooooooooooooooooooooooooooooo';
  309.    t[ 6]:='oooooooooooooooooooooooooooooooo';
  310.    t[ 7]:='oooooooooooooooooooooooooooooooo';
  311.    t[ 8]:='oooooooooooooooooooooooooooooooo';
  312.    t[ 9]:='oooooooooooooooooooooooooooooooo';
  313.    t[10]:='oooooooooooooooooooooooooooooooo';
  314.    t[11]:='oooooooooooooooooooooooooooooooo';
  315.    t[12]:='oooooooooooooooooooooooooooooooo';
  316.    t[13]:='oooooooooooooooooooooooooooooooo';
  317.    t[14]:='oooooooooooooooooooooooooooooooo';
  318.    t[15]:='oooooooooooooooooooooooooooooooo';
  319.    t[16]:='oooooooooooooooooooooooooooooooo';
  320.    t[17]:='ooooooooooooooooooooooooooooooo-';
  321.    t[18]:='ooooooooooooooooooooooooooooooo-';
  322.    t[19]:='ooooooooooooooooooooooooooooooo-';
  323.    t[20]:='oooooooooooooooooooooooooooooo--';
  324.    t[21]:='oooooooooooooooooooooooooooooo--';
  325.    t[22]:='ooooooooooooooooooooooooooooo---';
  326.    t[23]:='ooooooooooooooooooooooooooooo---';
  327.    t[24]:='oooooooooooooooooooooooooooo----';
  328.    t[25]:='ooooooooooooooooooooooooooo-----';
  329.    t[26]:='oooooooooooooooooooooooooo------';
  330.    t[27]:='ooooooooooooooooooooooooo-------';
  331.    t[28]:='oooooooooooooooooooooooo--------';
  332.    t[29]:='oooooooooooooooooooooo----------';
  333.    t[30]:='oooooooooooooooooooo------------';
  334.    t[31]:='ooooooooooooooooo---------------';
  335.    ConvertSpecial(s,o,2);
  336.    {special bitmap 3:  }
  337.    t[ 0]:='-----------------ooooooooooooooo';
  338.    t[ 1]:='--------------oooooooooooooooooo';
  339.    t[ 2]:='------------oooooooooooooooooooo';
  340.    t[ 3]:='----------oooooooooooooooooooooo';
  341.    t[ 4]:='--------oooooooooooooooooooooooo';
  342.    t[ 5]:='-------ooooooooooooooooooooooooo';
  343.    t[ 6]:='------oooooooooooooooooooooooooo';
  344.    t[ 7]:='-----ooooooooooooooooooooooooooo';
  345.    t[ 8]:='----oooooooooooooooooooooooooooo';
  346.    t[ 9]:='---ooooooooooooooooooooooooooooo';
  347.    t[10]:='---ooooooooooooooooooooooooooooo';
  348.    t[11]:='--oooooooooooooooooooooooooooooo';
  349.    t[12]:='--oooooooooooooooooooooooooooooo';
  350.    t[13]:='-ooooooooooooooooooooooooooooooo';
  351.    t[14]:='-ooooooooooooooooooooooooooooooo';
  352.    t[15]:='-ooooooooooooooooooooooooooooooo';
  353.    t[16]:='oooooooooooooooooooooooooooooooo';
  354.    t[17]:='oooooooooooooooooooooooooooooooo';
  355.    t[18]:='oooooooooooooooooooooooooooooooo';
  356.    t[19]:='oooooooooooooooooooooooooooooooo';
  357.    t[20]:='oooooooooooooooooooooooooooooooo';
  358.    t[21]:='oooooooooooooooooooooooooooooooo';
  359.    t[22]:='oooooooooooooooooooooooooooooooo';
  360.    t[23]:='oooooooooooooooooooooooooooooooo';
  361.    t[24]:='oooooooooooooooooooooooooooooooo';
  362.    t[25]:='oooooooooooooooooooooooooooooooo';
  363.    t[26]:='oooooooooooooooooooooooooooooooo';
  364.    t[27]:='oooooooooooooooooooooooooooooooo';
  365.    t[28]:='oooooooooooooooooooooooooooooooo';
  366.    t[29]:='oooooooooooooooooooooooooooooooo';
  367.    t[30]:='oooooooooooooooooooooooooooooooo';
  368.    t[31]:='oooooooooooooooooooooooooooooooo';
  369.    ConvertSpecial(s,o,3);
  370.    {special bitmap 4: round corner }
  371.    t[ 0]:='oooooooooooooooo----------------';
  372.    t[ 1]:='ooooooooooooooooooo-------------';
  373.    t[ 2]:='ooooooooooooooooooooo-----------';
  374.    t[ 3]:='ooooooooooooooooooooooo---------';
  375.    t[ 4]:='oooooooooooooooooooooooo--------';
  376.    t[ 5]:='ooooooooooooooooooooooooo-------';
  377.    t[ 6]:='oooooooooooooooooooooooooo------';
  378.    t[ 7]:='ooooooooooooooooooooooooooo-----';
  379.    t[ 8]:='oooooooooooooooooooooooooooo----';
  380.    t[ 9]:='ooooooooooooooooooooooooooooo---';
  381.    t[10]:='ooooooooooooooooooooooooooooo---';
  382.    t[11]:='oooooooooooooooooooooooooooooo--';
  383.    t[12]:='oooooooooooooooooooooooooooooo--';
  384.    t[13]:='ooooooooooooooooooooooooooooooo-';
  385.    t[14]:='ooooooooooooooooooooooooooooooo-';
  386.    t[15]:='ooooooooooooooooooooooooooooooo-';
  387.    t[16]:='oooooooooooooooooooooooooooooooo';
  388.    t[17]:='oooooooooooooooooooooooooooooooo';
  389.    t[18]:='oooooooooooooooooooooooooooooooo';
  390.    t[19]:='oooooooooooooooooooooooooooooooo';
  391.    t[20]:='oooooooooooooooooooooooooooooooo';
  392.    t[21]:='oooooooooooooooooooooooooooooooo';
  393.    t[22]:='oooooooooooooooooooooooooooooooo';
  394.    t[23]:='oooooooooooooooooooooooooooooooo';
  395.    t[24]:='oooooooooooooooooooooooooooooooo';
  396.    t[25]:='oooooooooooooooooooooooooooooooo';
  397.    t[26]:='oooooooooooooooooooooooooooooooo';
  398.    t[27]:='oooooooooooooooooooooooooooooooo';
  399.    t[28]:='oooooooooooooooooooooooooooooooo';
  400.    t[29]:='oooooooooooooooooooooooooooooooo';
  401.    t[30]:='oooooooooooooooooooooooooooooooo';
  402.    t[31]:='oooooooooooooooooooooooooooooooo';
  403.    ConvertSpecial(s,o,4);
  404.    {special bitmap 5: }
  405.    {special bitmap 6: Wall decoration }
  406.    t[ 0]:='oooooooooooooooooooooooooooooooo';
  407.    t[ 1]:='--oooooooooooooooooooooooooooooo';
  408.    t[ 2]:='------------oooooooooooooooooooo';
  409.    t[ 3]:='-------------------ooooooooooooo';
  410.    t[ 4]:='-----------------------ooooooooo';
  411.    t[ 5]:='-------------------------ooooooo';
  412.    t[ 6]:='---------------------------ooooo';
  413.    t[ 7]:='----------------------------oooo';
  414.    t[ 8]:='-----------------------------ooo';
  415.    t[ 9]:='---------cccccc---------------oo';
  416.    t[10]:='------ccccccccccc--------------o';
  417.    t[11]:='----ccccoooooooccc-------------o';
  418.    t[12]:='---cccooooooooooocc------------o';
  419.    t[13]:='--cccooooooooooooocc------------';
  420.    t[14]:='--ccooooooooooooooocc-----------';
  421.    t[15]:='-ccoooooooooooooooooc-----------';
  422.    t[16]:='-ccoooooooooooooooooc-----------';
  423.    t[17]:='-ccoooooooooooooooooc-----------';
  424.    t[18]:='-ccoooooooooooooooooc-----------';
  425.    t[19]:='--ccooooooooooooooocc-----------';
  426.    t[20]:='---ccooooooooooooocc------------';
  427.    t[21]:='----ccoooooooooooccc-----------o';
  428.    t[22]:='-----cccoooooooccc-------------o';
  429.    t[23]:='------ccccccccccc-------------oo';
  430.    t[24]:='--------ccccccc--------------ooo';
  431.    t[25]:='---------------------------ooooo';
  432.    t[26]:='-------------------------ooooooo';
  433.    t[27]:='----------------------oooooooooo';
  434.    t[28]:='------------------oooooooooooooo';
  435.    t[29]:='------------oooooooooooooooooooo';
  436.    t[30]:='--oooooooooooooooooooooooooooooo';
  437.    t[31]:='oooooooooooooooooooooooooooooooo';
  438.    ConvertSpecial(s,o,6);
  439.    {special bitmap 7: Small square on wall }
  440.    for x:=0 to 31 do for y:=0 to 31 do mem[s:o+x+y*32]:=random(3)+10;
  441.    for x:=10 to 20 do for y:=22 to 31 do mem[s:o+x+y*32]:=0;
  442.    ConvertBitmap(s,o,7);
  443.    {special bitmap 8: Round pilar (yes yes) }
  444.    t[ 0]:='-------------oooooo-------------';
  445.    t[ 1]:='----------oooooooooooo----------';
  446.    t[ 2]:='--------oooooooooooooooo--------';
  447.    t[ 3]:='-------oooooooooooooooooo-------';
  448.    t[ 4]:='------oooooooooooooooooooo------';
  449.    t[ 5]:='-----oooooooooooooooooooooo-----';
  450.    t[ 6]:='----oooooooooooooooooooooooo----';
  451.    t[ 7]:='---oooooooooooooooooooooooooo---';
  452.    t[ 8]:='--oooooooooooooooooooooooooooo--';
  453.    t[ 9]:='--oooooooooooooooooooooooooooo--';
  454.    t[10]:='-oooooooooooooooooooooooooooooo-';
  455.    t[11]:='-oooooooooooooooooooooooooooooo-';
  456.    t[12]:='-oooooooooooooooooooooooooooooo-';
  457.    t[13]:='oooooooooooooooooooooooooooooooo';
  458.    t[14]:='oooooooooooooooooooooooooooooooo';
  459.    t[15]:='oooooooooooooooooooooooooooooooo';
  460.    t[16]:='oooooooooooooooooooooooooooooooo';
  461.    t[17]:='oooooooooooooooooooooooooooooooo';
  462.    t[18]:='oooooooooooooooooooooooooooooooo';
  463.    t[19]:='-oooooooooooooooooooooooooooooo-';
  464.    t[20]:='-oooooooooooooooooooooooooooooo-';
  465.    t[21]:='-oooooooooooooooooooooooooooooo-';
  466.    t[22]:='--oooooooooooooooooooooooooooo--';
  467.    t[23]:='--oooooooooooooooooooooooooooo--';
  468.    t[24]:='---oooooooooooooooooooooooooo---';
  469.    t[25]:='----oooooooooooooooooooooooo----';
  470.    t[26]:='-----oooooooooooooooooooooo-----';
  471.    t[27]:='------oooooooooooooooooooo------';
  472.    t[28]:='-------oooooooooooooooooo-------';
  473.    t[29]:='--------oooooooooooooooo--------';
  474.    t[30]:='----------oooooooooooo----------';
  475.    t[31]:='-------------oooooo-------------';
  476.    ConvertSpecial(s,o,8);
  477.    {special bitmap 9: 45 degree wall, north-west }
  478.    for x:=0 to 31 do for y:=0 to 31 do mem[s:o+x+y*32]:=random(3)+5;
  479.    for y:=0 to 31 do for c:=(31-y) to 31 do mem[s:o+c+y*32]:=0;
  480.    ConvertBitmap(s,o,9);
  481.    {special bitmap 10: 45 degree wall, north-east }
  482.    for x:=0 to 31 do for y:=0 to 31 do mem[s:o+x+y*32]:=random(3)+5;
  483.    for y:=0 to 31 do for c:=0 to y do mem[s:o+c+y*32]:=0;
  484.    ConvertBitmap(s,o,10);
  485.    {special bitmap 11: 45 degree wall, south-east }
  486.    for x:=0 to 31 do for y:=0 to 31 do mem[s:o+x+y*32]:=random(3)+5;
  487.    for y:=0 to 31 do for c:=y to 31 do mem[s:o+c+y*32]:=0;
  488.    ConvertBitmap(s,o,11);
  489.    {special bitmap 12: 45 degree wall, south-west }
  490.    for x:=0 to 31 do for y:=0 to 31 do mem[s:o+x+y*32]:=random(3)+5;
  491.    for y:=0 to 31 do for c:=0 to (31-y) do mem[s:o+c+y*32]:=0;
  492.    ConvertBitmap(s,o,12);
  493.    {special bitmap 13: Light wall }
  494.    for x:=0 to 31 do for y:=0 to 31 do mem[s:o+x+y*32]:=0;
  495.    ConvertBitmap(s,o,13);
  496.    {special bitmap 14: elevator door 1 }
  497.    for x:=0 to 31 do for y:=0 to 31 do mem[s:o+x+y*32]:=0;
  498.    ConvertBitmap(s,o,14);
  499.    {special bitmap 15: elevator door 2 }
  500.    for x:=0 to 31 do for y:=0 to 31 do mem[s:o+x+y*32]:=0;
  501.    ConvertBitmap(s,o,15);
  502.    {special bitmap 16: muur }
  503.    for x:=0 to 31 do for y:=0 to 31 do mem[s:o+x+y*32]:=0;
  504.    ConvertBitmap(s,o,16);
  505.    {Make a characterset }
  506.    MChar(17,'---*--- --***-- -**-**- **---** ******* **---** **---**',s,o); {A}
  507.    MChar(18,'*****-- **--**- **---** ******- **---** **--**- *****--',s,o); {B}
  508.    {Ceiling texture - TL-2 }
  509.    for x:=0 to 31 do for y:=0 to 31 do mem[s:o+x+y*32]:=random(3)+16;
  510.    for x:=0 to 31 do mem[s:o+x]:=18;
  511.    for x:=0 to 31 do mem[s:o+x+31*32]:=18;
  512.    for y:=0 to 31 do mem[s:o+y*32]:=18;
  513.    for y:=0 to 31 do mem[s:o+y*32+31]:=18;
  514.    for x:=3 to 9 do for y:=3 to 28 do mem[s:o+y+x*32]:=1;
  515.    for x:=4 to 8 do for y:=4 to 26 do mem[s:o+y+x*32]:=31;
  516.    ConvertBitmap(s,o,19);
  517.    { Rest of font }
  518.    MChar(20,'*****-- **--**- **---** **---** **---** **--**- *****--',s,o); {D}
  519.    MChar(21,'******* **----- **----- *****-- **----- **----- *******',s,o); {E}
  520.    MChar(22,'******* **----- **----- *****-- **----- **----- **-----',s,o); {F}
  521.    {Nice ceiling texture}
  522.    for x:=0 to 31 do for y:=0 to 31 do mem[s:o+x+y*32]:=18;
  523.    for x:=2 to 29 do for y:=2 to 29 do mem[s:o+x+y*32]:=19;
  524.    ConvertBitmap(s,o,23);
  525.    {Rest of font}
  526.    MChar(24,'**---** **---** **---** ******* **---** **---** **---**',s,o); {H}
  527.    MChar(25,'-*****- --***-- --***-- --***-- --***-- --***-- -*****-',s,o); {I}
  528.    {Nice ceiling texture}
  529.    for x:=0 to 31 do for y:=0 to 31 do mem[s:o+x+y*32]:=18;
  530.    for x:=2 to 29 do for y:=2 to 29 do mem[s:o+x+y*32]:=20;
  531.    ConvertBitmap(s,o,26);
  532.    {Rest of font}
  533.    MChar(27,'**--**- **-**-- ****--- ***---- ****--- **-**-- **--**-',s,o); {K}
  534.    MChar(28,'**----- **----- **----- **----- **----- **----- *******',s,o); {L}
  535.    MChar(29,'**---** **---** ***-*** ***-*** ******* ******* **-*-**',s,o); {M}
  536.    MChar(30,'**---** **---** ***--** ****-** **-**** **--*** **---**',s,o); {N}
  537.    MChar(31,'-*****- **---** **---** **---** **---** **---** -*****-',s,o); {O}
  538.    MChar(32,'******- **---** **---** ******- **----- **----- **-----',s,o); {P}
  539.    MChar(33,'-*****- **---** **---** **---** **---** **--*** -******',s,o); {Q}
  540.    MChar(34,'******- **---** **---** ******- **-**-- **--**- *----**',s,o); {R}
  541.    MChar(35,'-*****- **---** **----- -*****- -----** **---** -*****-',s,o); {S}
  542.    MChar(36,'******* --***-- --***-- --***-- --***-- --***-- --***--',s,o); {T}
  543.    MChar(37,'**---** **---** **---** **---** **---** **---** -*****-',s,o); {U}
  544.    {Ceiling texture - TL-3 }
  545.    for x:=0 to 31 do for y:=0 to 31 do mem[s:o+x+y*32]:=random(3)+16;
  546.    for x:=0 to 31 do mem[s:o+x]:=18;
  547.    for x:=0 to 31 do mem[s:o+x+31*32]:=18;
  548.    for y:=0 to 31 do mem[s:o+y*32]:=18;
  549.    for y:=0 to 31 do mem[s:o+y*32+31]:=18;
  550.    for x:=22 to 28 do for y:=3 to 28 do mem[s:o+y+x*32]:=1;
  551.    for x:=23 to 27 do for y:=4 to 26 do mem[s:o+y+x*32]:=31;
  552.    ConvertBitmap(s,o,38);
  553.    {Ceiling texture - TL-4 }
  554.    for x:=0 to 31 do for y:=0 to 31 do mem[s:o+x+y*32]:=random(3)+16;
  555.    for x:=0 to 31 do mem[s:o+x]:=18;
  556.    for x:=0 to 31 do mem[s:o+x+31*32]:=18;
  557.    for y:=0 to 31 do mem[s:o+y*32]:=18;
  558.    for y:=0 to 31 do mem[s:o+y*32+31]:=18;
  559.    for x:=22 to 28 do for y:=3 to 28 do mem[s:o+x+y*32]:=1;
  560.    for x:=23 to 27 do for y:=4 to 26 do mem[s:o+x+y*32]:=31;
  561.    ConvertBitmap(s,o,39);
  562.    { bitmap 40: Red-white stripes (right) }
  563.    for x:=0 to 15 do for y:=0 to 31 do mem[s:o+x+y*32]:=random(3)+5;
  564.    for x:=16 to 31 do for y:=0 to 15 do mem[s:o+x+y*32]:=2;
  565.    for x:=16 to 31 do for y:=16 to 31 do mem[s:o+x+y*32]:=31;
  566.    ConvertBitmap(s,o,40);
  567.    { Rest of font }
  568.    MChar(41,'**---** **---** -**-**- -**-**- --***-- --***-- --***--',s,o); {Y}
  569.    MChar(42,'******* -----** ----**- ---**-- --**--- -**---- *******',s,o); {Z}
  570.    {Ceiling texture - Big lamp }
  571.    for x:=0 to 31 do for y:=0 to 31 do mem[s:o+x+y*32]:=random(3)+16;
  572.    for x:=0 to 31 do mem[s:o+x]:=18;
  573.    for x:=0 to 31 do mem[s:o+x+31*32]:=18;
  574.    for y:=0 to 31 do mem[s:o+y*32]:=18;
  575.    for y:=0 to 31 do mem[s:o+y*32+31]:=18;
  576.    for x:=4 to 28 do for y:=4 to 28 do mem[s:o+x+y*32]:=1;
  577.    for x:=6 to 26 do for y:=6 to 26 do mem[s:o+x+y*32]:=31;
  578.    ConvertBitmap(s,o,43);
  579.    {Ceiling texture - Airco }
  580.    for x:=0 to 31 do for y:=0 to 31 do mem[s:o+x+y*32]:=random(3)+16;
  581.    for x:=0 to 31 do mem[s:o+x]:=18;
  582.    for x:=0 to 31 do mem[s:o+x+31*32]:=18;
  583.    for y:=0 to 31 do mem[s:o+y*32]:=18;
  584.    for y:=0 to 31 do mem[s:o+y*32+31]:=18;
  585.    for x:=2 to 29 do for y:=2 to 29 do mem[s:o+x+y*32]:=1;
  586.    for i:=0 to 5 do for x:=0 to 3 do for y:=4 to 27 do mem[s:o+x+i*4+y*32+4]:=x+20;
  587.    ConvertBitmap(s,o,44);
  588.    { bitmap 45: lavastroompje (wordt naar links gescrolld) }
  589.    c:=24;
  590.    for x:=0 to 31 do for y:=0 to 31 do begin
  591.       mem[s:o+x+y*32]:=c;
  592.       if random(4)=1 then begin inc(c); if c=27 then c:=24 end;
  593.    end;
  594.    ConvertBitmap(s,o,45);
  595.    {bitmap 46: Dark Checkers }
  596.    for x:=0 to 15 do for y:=0 to 15 do mem[s:o+x+y*32]:=random(2)+20;
  597.    for x:=0 to 15 do for y:=16 to 31 do mem[s:o+x+y*32]:=random(2)+21;
  598.    for x:=16 to 31 do for y:=0 to 15 do mem[s:o+x+y*32]:=random(2)+21;
  599.    for x:=16 to 31 do for y:=16 to 31 do mem[s:o+x+y*32]:=random(2)+20;
  600.    ConvertBitmap(s,o,46);
  601.    { bitmap 47: Red-white stripes }
  602.    for x:=16 to 31 do for y:=0 to 31 do mem[s:o+x+y*32]:=random(3)+5;
  603.    for x:=0 to 15 do for y:=0 to 15 do mem[s:o+x+y*32]:=31;
  604.    for x:=0 to 15 do for y:=16 to 31 do mem[s:o+x+y*32]:=2;
  605.    ConvertBitmap(s,o,47);
  606.    {bitmap 59: Checkers }
  607.    for x:=0 to 15 do for y:=0 to 15 do mem[s:o+x+y*32]:=random(3)+5;
  608.    for x:=0 to 15 do for y:=16 to 31 do mem[s:o+x+y*32]:=random(3)+10;
  609.    for x:=16 to 31 do for y:=0 to 15 do mem[s:o+x+y*32]:=random(3)+10;
  610.    for x:=16 to 31 do for y:=16 to 31 do mem[s:o+x+y*32]:=random(3)+5;
  611.    ConvertBitmap(s,o,59);
  612.    {Bitmap 48-51: Big sign on floor (behind elevator doors) }
  613.    {uses the information at [s3:o3] of the last bitmap}
  614.    t[ 0]:='--------------------------======';
  615.    t[ 1]:='----------------------==========';
  616.    t[ 2]:='-------------------=============';
  617.    t[ 3]:='-----------------========-------';
  618.    t[ 4]:='---------------======-----------';
  619.    t[ 5]:='--------------=====-------------';
  620.    t[ 6]:='-------------====---------------';
  621.    t[ 7]:='------------===-----------------';
  622.    t[ 8]:='----------====------------------';
  623.    t[ 9]:='---------====-------------------';
  624.    t[10]:='--------====--------------------';
  625.    t[11]:='-------====---------------------';
  626.    t[12]:='-------===----------------------';
  627.    t[13]:='------===-------================';
  628.    t[14]:='-----===--------================';
  629.    t[15]:='-----===--------================';
  630.    t[16]:='----===---------================';
  631.    t[17]:='---===----------================';
  632.    t[18]:='---===----------=======---------';
  633.    t[19]:='--===-----------=======---------';
  634.    t[20]:='--===-----------=======---------';
  635.    t[21]:='--===-----------=======---------';
  636.    t[22]:='-===------------=======---------';
  637.    t[23]:='-===------------=======---------';
  638.    t[24]:='-===------------=======---------';
  639.    t[25]:='===-------------=======---------';
  640.    t[26]:='===-------------=======---------';
  641.    t[27]:='===-------------=======---------';
  642.    t[28]:='===-------------=======---------';
  643.    t[29]:='===-------------=======---------';
  644.    t[30]:='===-------------================';
  645.    t[31]:='===-------------================';
  646.    ConvertSpecial(s,o,48);
  647.    {49}
  648.    t[ 0]:='======--------------------------';
  649.    t[ 1]:='==========----------------------';
  650.    t[ 2]:='=============-------------------';
  651.    t[ 3]:='-----==========-----------------';
  652.    t[ 4]:='---------=======----------------';
  653.    t[ 5]:='------------=====---------------';
  654.    t[ 6]:='--------------=====-------------';
  655.    t[ 7]:='---------------=====------------';
  656.    t[ 8]:='-----------------====-----------';
  657.    t[ 9]:='------------------=====---------';
  658.    t[10]:='-------------------=====--------';
  659.    t[11]:='---------------------===--------';
  660.    t[12]:='----------------------===-------';
  661.    t[13]:='===========-----------====------';
  662.    t[14]:='=============----------====-----';
  663.    t[15]:='==============----------===-----';
  664.    t[16]:='===============----------===----';
  665.    t[17]:='================---------====---';
  666.    t[18]:='--------========----------===---';
  667.    t[19]:='----------======-----------===--';
  668.    t[20]:='-----------======----------===--';
  669.    t[21]:='------------=====----------===--';
  670.    t[22]:='------------=====-----------===-';
  671.    t[23]:='------------=====-----------===-';
  672.    t[24]:='------------=====-----------===-';
  673.    t[25]:='------------=====-----------===-';
  674.    t[26]:='------------=====------------===';
  675.    t[27]:='-----------======------------===';
  676.    t[28]:='----------======-------------===';
  677.    t[29]:='--------========-------------===';
  678.    t[30]:='================-------------===';
  679.    t[31]:='===============--------------===';
  680.    ConvertSpecial(s,o,49);
  681.    {50}
  682.    t[ 0]:='===-------------================';
  683.    t[ 1]:='===-------------================';
  684.    t[ 2]:='===-------------================';
  685.    t[ 3]:='===-------------=======---------';
  686.    t[ 4]:='===-------------=======---------';
  687.    t[ 5]:='===-------------=======---------';
  688.    t[ 6]:='-===------------=======---------';
  689.    t[ 7]:='-===------------=======---------';
  690.    t[ 8]:='-===------------=======---------';
  691.    t[ 9]:='-===------------=======---------';
  692.    t[10]:='--===-----------=======---------';
  693.    t[11]:='--===-----------=======---------';
  694.    t[12]:='--===-----------=======---------';
  695.    t[13]:='---===----------=======---------';
  696.    t[14]:='---===----------=======---------';
  697.    t[15]:='----===---------=======---------';
  698.    t[16]:='----====--------=======---------';
  699.    t[17]:='-----====-----------------------';
  700.    t[18]:='------===-----------------------';
  701.    t[19]:='------====----------------------';
  702.    t[20]:='-------====---------------------';
  703.    t[21]:='--------====--------------------';
  704.    t[22]:='---------====-------------------';
  705.    t[23]:='----------====------------------';
  706.    t[24]:='-----------=====----------------';
  707.    t[25]:='-------------====---------------';
  708.    t[26]:='--------------=====-------------';
  709.    t[27]:='---------------======-----------';
  710.    t[28]:='-----------------========-------';
  711.    t[29]:='-------------------=============';
  712.    t[30]:='----------------------==========';
  713.    t[31]:='--------------------------======';
  714.    ConvertSpecial(s,o,50);
  715.    {51}
  716.    t[ 0]:='==============---------------===';
  717.    t[ 1]:='=============----------------===';
  718.    t[ 2]:='===========------------------===';
  719.    t[ 3]:='-----------------------------===';
  720.    t[ 4]:='-----------------------------===';
  721.    t[ 5]:='----------------------------====';
  722.    t[ 6]:='----------------------------===-';
  723.    t[ 7]:='----------------------------===-';
  724.    t[ 8]:='----------------------------===-';
  725.    t[ 9]:='---------------------------====-';
  726.    t[10]:='---------------------------===--';
  727.    t[11]:='--------------------------====--';
  728.    t[12]:='--------------------------====--';
  729.    t[13]:='--------------------------===---';
  730.    t[14]:='-------------------------====---';
  731.    t[15]:='-------------------------===----';
  732.    t[16]:='------------------------====----';
  733.    t[17]:='-----------------------====-----';
  734.    t[18]:='----------------------====------';
  735.    t[19]:='----------------------===-------';
  736.    t[20]:='---------------------====-------';
  737.    t[21]:='--------------------====--------';
  738.    t[22]:='-------------------====---------';
  739.    t[23]:='------------------====----------';
  740.    t[24]:='----------------=====-----------';
  741.    t[25]:='---------------====-------------';
  742.    t[26]:='-------------=====--------------';
  743.    t[27]:='----------=======---------------';
  744.    t[28]:='------=========-----------------';
  745.    t[29]:='=============-------------------';
  746.    t[30]:='==========----------------------';
  747.    t[31]:='======--------------------------';
  748.    ConvertSpecial(s,o,51);
  749.    {Bitmap 52: Ceiling texture }
  750.    for x:=0 to 31 do for y:=0 to 31 do mem[s:o+x+y*32]:=random(3)+16;
  751.    for x:=0 to 31 do mem[s:o+x]:=18;
  752.    for x:=0 to 31 do mem[s:o+x+31*32]:=18;
  753.    for y:=0 to 31 do mem[s:o+y*32]:=18;
  754.    for y:=0 to 31 do mem[s:o+y*32+31]:=18;
  755.    ConvertBitmap(s,o,52);
  756.    {bitmap 53: Red square }
  757.    for x:=0 to 31 do for y:=0 to 31 do mem[s:o+x+y*32]:=2;
  758.    ConvertBitmap(s,o,53);
  759.    {bitmap 54: Small red square }
  760.    for x:=0 to 15 do for y:=0 to 15 do mem[s:o+x+y*32]:=2;
  761.    ConvertBitmap(s,o,54);
  762.    {bitmap 55: Black square }
  763.    for x:=0 to 31 do for y:=0 to 31 do mem[s:o+x+y*32]:=1;
  764.    ConvertBitmap(s,o,55);
  765.    {bitmap 56: Ceiling - TL 1 }
  766.    for x:=0 to 31 do for y:=0 to 31 do mem[s:o+x+y*32]:=random(3)+16;
  767.    for x:=0 to 31 do mem[s:o+x]:=18;
  768.    for x:=0 to 31 do mem[s:o+x+31*32]:=18;
  769.    for y:=0 to 31 do mem[s:o+y*32]:=18;
  770.    for y:=0 to 31 do mem[s:o+y*32+31]:=18;
  771.    for x:=3 to 9 do for y:=3 to 28 do mem[s:o+x+y*32]:=1;
  772.    for x:=4 to 8 do for y:=4 to 26 do mem[s:o+x+y*32]:=31;
  773.    ConvertBitmap(s,o,56);
  774.    {bitmap 57: Ordinary tile - light version }
  775.    for x:=0 to 31 do for y:=0 to 31 do mem[s:o+x+y*32]:=random(3)+5;
  776.    ConvertBitmap(s,o,57);
  777.    {bitmap 58: Ordinary tile - darker version }
  778.    for x:=0 to 31 do for y:=0 to 31 do mem[s:o+x+y*32]:=random(3)+10;
  779.    ConvertBitmap(s,o,58);
  780.    {wall-bitpattern: vertical line colors for special blocks (1-16) }
  781.    Wall( 0,'nnnnnnnnnnnnnnnnnnnnnnnnnnoooppp',s,o);   { black walls }
  782.    Wall( 1,'nnnnnnnnnnnnnnnnnnnnnnnnnnoooppp',s,o);   { door        }
  783.    Wall( 2,'nnnnnnnnnnnnnnnnnnnnnnnnnnoooppp',s,o);
  784.    Wall( 3,'nnnnnnnnnnnnnnnnnnnnnnnnnnoooppp',s,o);
  785.    Wall( 4,'                                ',s,o);   { film doek   }
  786.    Wall( 5,'pppppppppooooooooooooonnnnnnnnnn',s,o);   { wall decor  }
  787.    Wall( 6,'tttttttttttttttttttttttttttttttt',s,o);   { wood blocks }
  788.    Wall( 7,'nnnopponnnopponnnopponnnopponnnp',s,o);   { pilars }
  789.    Wall( 8,'nnnnnnnnnnnnnnnnnnnnnnnnnnoooppp',s,o);   { 45 degree 1 }
  790.    Wall( 9,'nnnnnnnnnnnnnnnnnnnnnnnnnnoooppp',s,o);   { 45 degree 2 }
  791.    Wall(10,'nnnnnnnnnnnnnnnnnnnnnnnnnnoooppp',s,o);   { 45 degree 3 }
  792.    Wall(11,'nnnnnnnnnnnnnnnnnnnnnnnnnnoooppp',s,o);   { 45 degree 4 }
  793.    Wall(12,'nnnnnnnnnnnnnnnnnnnnnnnnnnoooppp',s,o);   { normal wall }
  794.    Wall(13,'iiiiiiiiiiiiiiiijjjijiiiiiiijjjj',s,o);   { elevator door}
  795.    Wall(14,'iiiiiiiiiiiiiiiijjjijiiiiiiijjjj',s,o);   { elevator door}
  796.    Wall(15,'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',s,o);   { black wall  }
  797. end;
  798.  
  799. procedure MakeTransTabel(r: word);
  800. var s,o: word;
  801.     w,sy,x1,y1: real;
  802.     yb,yc,y,a2,x,a3,a4: word;
  803.     x2,y2,x3,y3: real;
  804.     f: file;
  805.     hg: byte;
  806. begin
  807.    w:=SIZE div 2;
  808.    a4:=o1+r*560+32768;
  809.    r:=r*2;
  810.    hg:=2*LINES+KIM+3;
  811.    for y:=0 to LINES do begin
  812.       y1:=(((65536*500)/w)-65536*3.125)/(-4);
  813.       yb:=round(y1/-DIST);
  814.       yc:=round(yb div 32)*32;
  815.       x2:=MCENTRE*65536-(cs[r]*(SIZE div 2)*65536)/w-sn[r]*y1;
  816.       y2:=65536*64+cs[r]*y1-(sn[r]*(SIZE div 2)*65536)/w;
  817.       memw[s1:a4+y*8]:=round(x2/128);
  818.       memw[s1:a4+y*8+2]:=round(y2/128);
  819.       x3:=65536*MCENTRE+cs[r]*(65536*((SIZE div 2)-1))/w-sn[r]*y1-x2;
  820.       y3:=65536*64+cs[r]*y1+sn[r]*(65536*((SIZE div 2)-1))/w-y2;
  821.       memw[s1:a4+y*8+4]:=round(x3/SIZE);
  822.       memw[s1:a4+y*8+6]:=round(y3/SIZE);
  823.       w:=w-(SIZE/160);    { ongeveer 145 voor 65 regels }
  824.       memw[s3:o3+y*2+65350]:=yc+yc shl 8;
  825.       memw[s3:o3+y*2+64600]:=round(65536/hg);
  826.       dec(hg,2);
  827.    end;
  828. end;
  829.  
  830. procedure Initialize;
  831. begin
  832.     clrscr;
  833.     Writeln('Calculating new data... Wait a second.');
  834.     for i:=0 to 360 do begin
  835.        sn[i]:=sin((i*3.14159)/180);
  836.        cs[i]:=cos((i*3.14159)/180);
  837.     end;
  838.  
  839.     GetMem(p1,65535);
  840.     GetMem(p3,65535);
  841.  
  842.     DummyBitmaps(p3);
  843.     s3:=Seg(p3^);
  844.     o3:=Ofs(p3^);
  845.     DummySource(p1);
  846.     s1:=Seg(p1^);
  847.     o1:=Ofs(p1^);
  848.     for i:=0 to 44 do MakeTransTabel(i);
  849.  
  850.     assign(f,'3dspace.wad');
  851.     rewrite(f,1);
  852.     BlockWrite(f,p1^,65535);
  853.     BlockWrite(f,p3^,65535);
  854.     close(f);
  855.  
  856.     Writeln('New datafile saved.');
  857. end;
  858.  
  859. begin
  860.   Initialize;
  861. end.
  862.